package com.yazi.mxz.person.jackson.filter;

import java.util.HashSet;
import java.util.Set;

import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.yazi.mxz.common.entity.beans.LocalSale;
import com.yazi.mxz.common.entity.beans.LocalSaleGoods;
import com.yazi.mxz.common.entity.beans.Member;
import com.yazi.mxz.common.entity.beans.StoreGoods;

public abstract class LocalSaleFilter {

	public static FilterProvider get() {
		final Set<String> sale = new HashSet<String>();
		sale.add("saleId");
		sale.add("serialCode");

		return new SimpleFilterProvider()
				.addFilter(LocalSale.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(sale));
	}
	
	public static FilterProvider getWithMemberAndLocalSaleGoodsesWithStoreGoods() {
		final Set<String> sale = new HashSet<String>();
		sale.add("localSaleGoodses");
		sale.add("member");
		sale.add("saleId");
		sale.add("serialCode");
		final Set<String> member = new HashSet<String>();
		member.add("balance");
		member.add("integral");
		member.add("memberId");
		member.add("mobile");
		member.add("name");
		member.add("realName");
		final Set<String> saleGoodses = new HashSet<String>();
		saleGoodses.add("amount");
		saleGoodses.add("cost");
		saleGoodses.add("saleGoodsId");
		saleGoodses.add("storeGoods");
		saleGoodses.add("type");
		final Set<String> storeGoods = new HashSet<String>();
		storeGoods.add("barCode");
		storeGoods.add("hasGift");
		storeGoods.add("name");
		storeGoods.add("onSale");
		storeGoods.add("originalPrice");
		storeGoods.add("pic");
		storeGoods.add("price");
		storeGoods.add("sellDef");
		storeGoods.add("sellExt");
		storeGoods.add("sellMin");
		storeGoods.add("sellUnit");
		storeGoods.add("status");
		storeGoods.add("stock");
		storeGoods.add("stockConvert");
		storeGoods.add("storeGoodsId");
		storeGoods.add("title");
		storeGoods.add("unit");
		storeGoods.add("unitConvert");
		

		return new SimpleFilterProvider()
				.addFilter(LocalSale.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(sale))
				.addFilter(Member.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(member))
				.addFilter(LocalSaleGoods.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(saleGoodses))
				.addFilter(StoreGoods.class.getSimpleName(),
						SimpleBeanPropertyFilter.filterOutAllExcept(storeGoods));
	}

}
